/**
 * 
 */
package com.tpl.core.basedata.service;

import com.tpl.core.common.page.Page;
import com.tpl.core.entity.sys.Role;

import java.util.List;


/**
 * @author 狄敏
 *
 * 创建时间：Jul 29, 2013 3:21:31 PM
 */
public interface RoleService {
	
	/**
	 * 获取部门下角色列表
	 * @param deptId
	 * @return
	 */
	List<Role> getRoles(Long deptId);
	
	/**
	 * 获取多个部门下角色列表
	 * @return
	 */
	List<Role> getRolesByMoreDeptId(String deptIds);
	
	/**
	 * 保存一个新的角色
	 * @param role
	 */
	void saveRole(Role role);
	
	/***
	 * 修改角色名称
	 * @param role
	 */
	void update(Role role);
	
	/**
	 * 获取角色对应菜单
	 * @param roleId
	 * @return
	 */
	List<Role> getMenuByRoleId(Long roleId);
	
	/**
	 * 获取部门下角色分页信息
	 * @param deptId
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 */
	Page getRolePage(Long deptId, int pageIndex, int pageSize);
	
	/**
	 * 获取角色人员信息
	 * @param userId
	 * @param roleId
	 * @return
	 */
	List<Role> getRoleUserByParam(Long userId,Long roleId);
	
	/**
	 * 保存编辑的角色下菜单
	 * @param del_
	 * @param new_
	 * @param roleId
	 */
	void saveRoleMenu(Long[] del_, Long[] new_, Long roleId);
	
	/**
	 * 通过id获取角色信息
	 * @param roleId
	 * @return
	 */
	Role getRoleById(Long roleId);
	
	/**
	 * 启用和禁用
	 * @param roleId
	 * @param state
	 */
	void updateState(Long roleId,String state);
	/**
	 * 除当前操作人外，清空角色下人员
	 * @param roleId
	 * @param userId
	 */
	void doClearRoleUser(Long roleId,Long userId);
	/**
	 * 删除角色
	 * @param roleId
	 */
	void delete(Long roleId);
	
	/**
	 * 查询角色下人数
	 * @param roleId
	 * @param userId
	 * @return
	 */
	Long getUserNumByRoleId(Long roleId,Long userId);
	
	/**
	 * 添加参照角色
	 */
	void doReferRoles(Long deptId,List<Role> list,String creator);

//	void doClearRoleUser2(Long roleId, Long userId);
	
}
